namespace LaunchMeNot.Core {
    public interface IStartupEntry {
        /// <summary>
        /// Gets or sets the type of the entry.
        /// </summary>
        /// <value>The type of the entry.</value>
        StartupEntryType EntryType { get; set;  }

        /// <summary>
        /// Gets or sets the friendly name.
        /// </summary>
        /// <value>The friendly name.</value>
        string Name { get; set; }

        /// <summary>
        /// Gets or sets the path to the item to launch.
        /// </summary>
        /// <value>The path to the item to launch.</value>
        string Path { get; set; }

        /// <summary>
        /// Gets or sets the arguments to pass to the program on launch.
        /// </summary>
        /// <value>The arguments to pass to the program on launch.</value>
        string Arguments { get; set; }

        /// <summary>
        /// Gets the full path including arguments.
        /// </summary>
        /// <value>The full path including arguments.</value>
        string FullPath { get; }

        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns>A deep copy of this entry.</returns>
        IStartupEntry Clone();
    }
}